import request from "@/utils/request";
import { FlowNodeVo } from "./flowNode.api";

const FLOW_BASE_URL = "/system/flow";

const FlowAPI = {
  /**
   * 获取流程分页列表
   * @param queryParams 查询参数
   */
  getPage(queryParams: PageQuery) {
    return request<any, PageResult<FlowPageVO[]>>({
      url: `${FLOW_BASE_URL}/loadPage`,
      method: "get",
      params: queryParams,
    });
  },

  /**
   * 所有流程
   */
  getOptions() {
    return request<any, FlowPageVO[]>({
      url: `${FLOW_BASE_URL}/loadAll`,
      method: "get",
    });
  },

  /**
   * 添加流程
   * @param data 流程表单数据
   */
  create(data: FlowForm) {
    return request<any, FlowPageVO>({
      url: `${FLOW_BASE_URL}/add`,
      method: "post",
      data,
    });
  },

  /**
   * 修改流程
   * @param data 流程表单数据
   */
  update(data: FlowForm) {
    return request<any, FlowPageVO>({
      url: `${FLOW_BASE_URL}/update`,
      method: "post",
      data,
    });
  },

  /**
   * 删除流程
   */
  deleteById(id: string) {
    return request({
      url: `${FLOW_BASE_URL}/delete/${id}`,
      method: "get",
    });
  },
    /**
 * 复制流程
 * @param id 流程id
 */
  copy(id: string) {
    return request({
      url: `${FLOW_BASE_URL}/copy/${id}`,
      method: "get",
    });
  },
};

export default FlowAPI;

/** 流程分页对象 */
export interface FlowPageVO {
  /** ID */
  id: string;
  /** 名称 */
  name: string;
  /** 描述 */
  remark: string;
  /** 创建时间 */
  updateTime: string;
}

/** 流程表单类型 */
export interface FlowForm {
  /** ID */
  id?: string;
  /** 名称 */
  name: string;
  /** 描述 */
  remark?: string;
  /** 节点 */
  flowNodes: FlowNodeVo[];
}
